/**
 * Copyright (C) 2013 DaiKit.com - daikit4gxt module (admin@daikit.com)
 *
 *         Project home : http://code.daikit.com/daikit4gxt
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.daikit.daikit4gxt.client.ui.forms;

import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.widget.core.client.Component;
import com.sencha.gxt.widget.core.client.form.AdapterField;


/**
 * An adapter field that permits to have a proper layout even if not visible when resized.
 * 
 * @author tcaselli
 * @version $Revision$ Last modifier: $Author$ Last commit: $Date$
 * @param <T>
 */
public abstract class AbstractDkHideableAdapterField<T> extends AdapterField<T>
{

	/**
	 * Constructor
	 * 
	 * @param widget
	 *           the {@link Widget}
	 */
	public AbstractDkHideableAdapterField(final Widget widget)
	{
		super(widget);
		//		layoutCommand = new ScheduledCommand()
		//		{
		//			@Override
		//			public void execute()
		//			{
		//				if (isAttached() && isWidgetVisible(AbstractDkHideableAdapterField.this))
		//				{
		//					doLayout();
		//				}
		//			}
		//		};
	}

	protected boolean sizeNeedToBeCleared = true;

	@Override
	protected void onBeforeDoLayout()
	{
		if (sizeNeedToBeCleared)
		{
			sizeNeedToBeCleared = false;
			clearSizeCache();
			if (getWidget() instanceof Component)
			{
				((Component) getWidget()).clearSizeCache();
			}
		}
	}

}
